1979E - Manhattan Triangle - CodeForces Solution


binary search constructive algorithms data structures geometry implementation two pointers *2400

Please click on ads to support us..

Python Code:

def solve():
  n, d = map(int, input().split())
  X = [0 for _ in range(n)]
  Y = [0 for _ in range(n)]
  
  for i in range(n):
    x, y = map(int, input().split())
    X[i], Y[i] = x - y, x + y
    
  for _ in range(2):
    hach = {}
    for i in range(n):
      if X[i] not in hach:
        hach[X[i]] = {}
      hach[X[i]][Y[i]] = i
    
    for i in range(n):
      x = X[i]
      y = Y[i]
      if y + d in hach.get(x, {}):
        edge = hach[x][y + d]
        for point in [x - d, x + d]:
          if point in hach:
            for key in sorted(hach[point]):
              if y <= key <= y + d:
                print(i + 1, edge + 1, hach[point][key] + 1)
                return 0
    X, Y = Y, X
      
  print("0 0 0")
 
for _ in range(int(input())):
  solve()
    


Comments

Submit
0 Comments
More Questions

1450A - Avoid Trygub
327A - Flipping Game
411A - Password Check
1520C - Not Adjacent Matrix
1538B - Friends and Candies
580A - Kefa and First Steps
1038B - Non-Coprime Partition
43A - Football
50A - Domino piling
479A - Expression
1480A - Yet Another String Game
1216C - White Sheet
1648A - Weird Sum
427A - Police Recruits
535A - Tavas and Nafas
581A - Vasya the Hipster
1537B - Bad Boy
1406B - Maximum Product
507B - Amr and Pins
379A - New Year Candles
1154A - Restoring Three Numbers
750A - New Year and Hurry
705A - Hulk
492B - Vanya and Lanterns
1374C - Move Brackets
1476A - K-divisible Sum
1333A - Little Artem
432D - Prefixes and Suffixes
486A - Calculating Function
1373B - 01 Game